import Vue from 'vue'
import App from './App'
import {router,RouterMount} from './router.js'
Vue.use(router)

Vue.config.productionTip = false

App.mpType = 'app'


// 引入全局uView
import uView from 'uview-ui';
Vue.use(uView);

// 引入全局store
import store from '@/store';

// 引入uView提供的对vuex的简写法文件
let vuexStore = require('@/store/$u.mixin.js');
Vue.mixin(vuexStore);

//引入全局配置  全局可 通过 this.$config 访问 配置
import config from "@/config/config.js";
Vue.use(config);

//引入过滤器
import * as filter from '@/common/filter.js'
Object.keys(filter).forEach(key => {
  Vue.filter(key, filter[key])
})
Vue.prototype.$filter = filter;

// 引入语言包，注意路径
import zh from '@/common/locales/zh.js';
import en from '@/common/locales/en.js';

// 引入并使用vue-i18n
import VueI18n from 'vue-i18n'
Vue.use(VueI18n)

// 引入自定义组件
import home from '@/pages/home/home.vue'
Vue.component('home',home)

import classify from '@/pages/classify/classify.vue'
Vue.component('classify',classify)

import cart from '@/pages/cart/cart.vue'
Vue.component('cart',cart)

import mine from '@/pages/mine/mine.vue'
Vue.component('mine',mine)

import cuCustom from '@/colorui/components/cu-custom.vue'
Vue.component('cu-custom',cuCustom)

// 构造i18n对象
const i18n = new VueI18n({
	// 默认语言，这里的local属性，对应message中的zh、en属性
	locale: 'zh',
	// 引入语言文件
	messages: {
		// 这里的属性名是任意的，您也可以把zh设置为cn等，只是后续切换语言时
		// 要标识这里的语言属性，如：this.$i18n.locale = zh|en|zh|xxx
		'zh': zh, // 这里为上面通过import引入的语言包
		'en': en,
	}
})

// 由于微信小程序的运行机制问题，需声明如下一行，H5和APP非必填
Vue.prototype._i18n = i18n

const app = new Vue({
	i18n,
	store,
    ...App
})

// http拦截器，将此部分放在new Vue()和app.$mount()之间，才能App.vue中正常使用
import httpInterceptor from '@/common/http.interceptor.js';
Vue.use(httpInterceptor, app);

// http接口API抽离，免于写url或者一些固定的参数
import httpApi from '@/common/http.api.js';
Vue.use(httpApi, app);

// 公共函数
import globalFunc from '@/utils/common.js'
Vue.use(globalFunc, app)

// 微信SDK
// #ifdef H5
import weixin from '@/utils/jwx.js'
Vue.use(weixin, app)
// #endif

//引入lodash
import lodash from 'lodash';
Vue.prototype._ = lodash

//引入dayjs
import dayjs from 'dayjs';
Vue.prototype.dayjs = dayjs;

// #ifdef H5
// 提交前需要注释  本地调试使用
const vconsole = require('vconsole')
Vue.prototype.$vconsole = new vconsole() // 使用vconsole
// #endif

//v1.3.5起 H5端 你应该去除原有的app.$mount();使用路由自带的渲染方式
// #ifdef H5
	RouterMount(app,router,'#app')
// #endif

// #ifndef H5
	app.$mount(); //为了兼容小程序及app端必须这样写才有效果
// #endif
